The invention relates to method and apparatus for converting a computer-dependent data format (that is, computer-specific data format) when data is communicated among a plurality of computers. More particularly, the invention relates to a method of converting a program language-dependent data format (that is, program language-specific data format) which is used for communication among distributed objects on a plurality of computers for performing a distributed computing and is used in each computer into a stream data format which is used for communication among the computers. The invention also relates to method and apparatus for converting a stream data format which is used in communication among the computers into a program language-specific data format which is used in each computer.
Generally, when calling from a certain program to another program, a transmission and a reception of data are performed on the same computer by using an interface which depends on a specific operating system and a specific program language. On the other hand, in a distributed computing environment, a plurality of programs (distributed objects) can exist over a plurality of computers and can transmit and receive data. A distributed object which requests a process is called a client object. A distributed object which processes the request from the client object is called a server object. A function for accepting the request from the client object, retrieving a proper server object to process the request, communicating with the computer in which the server object exists, and calling the server object is called an object request broker (ORB). In the case where the client object and the server object communicate among a plurality of computers, the ORB performs a data exchange by using data of a neutral stream format which is not specific to the architecture of a particular computer, a particular operating system, and a particular program language. Therefore, in order to incorporate an ORB, it is necessary to provide a process (marshalling) for converting from a format which is specific to the architecture of particular computer, particular operating system, and particular program language into a neutral data stream and a reverse process (unmarshalling).
Generally, the server object residentially or persistently exists on a certain computer and processes requests from many and unspecified client objects a plural number of times. Each time the request from the client object comes, the unmarshalling process occurs. Each time a reply to the request is returned, the marshalling process occurs.
An example of the unmarshalling process and marshalling process will be described with reference to FIG. 7.
In FIG. 7, in the unmarshalling process, stream data is divided from an identifier 10 describing a marshalling method written in the head of stream data 8 and an IDL (Interface Definition Language) 12 describing a structure of the stream data and is converted into the data which is specific to a particular program language while discriminating attributes of each of the divided data elements from the IDL. The IDL 12 includes, for example, information indicating such that the first data of the stream data is an integer type and the next data is a character type. In the marshalling process, first, a marshalling method is determined from the architecture of the computer which executes the marshalling process and the version of the ORB and the identifier 10 of the marshalling method is stored in the header of the stream. Subsequently, the attributes of the data are discriminated with respect to each of the program language-specific data and the program language-specific data is converted into the stream data. In those processes, it is necessary to understand the meaning of each of the inputted data in order to convert each inputted data. In the case where data of a complicated format such as data of a user definition type or the like is exchanged between the client and the server, a load of computing resources (CPU, main memory or other resources) which are required for the marshalling and unmarshalling is large.
It is an object of the invention to provide high-speed marshalling and unmarshalling processing methods and apparatus in the case where a transmission and a reception of data between a client and a server occur a plural number of times.
To accomplish the above object, according to one aspect of the invention, there is provided an apparatus for converting a data format which is specific to a particular program language on a particular computer into stream data which is not specific to, i.e., is common to particular computers, comprising: a caching part or component for storing a correspondence between a program language-specific data format and stream data; a marshalling part or component for retrieving whether all or a part of the data of the program language-specific format has been stored in the cache or not, for performing a conversion by using the data on the cache when the data exists on the cache, and for converting the data of the program language-specific format into the stream data without using the cache when the data does not exist on the cache; and a cache registering part or component for registering a result into the cache at the time of the conversion from the data of the program language-specific format into the stream data or the conversion from the stream data into the data of the program language-specific format.
In such a construction, when the data is transmitted, the marshalling part retrieves or discriminates whether the received data exists on the cache or not, converts the data at a high speed by referring to the cache when the data exists, and converts the data at a low speed by the foregoing method or another known method without using the cache when the data does not exist. When the data is converted by the method which does not use the cache, the conversion result is registered into the cache by using the cache registering part.
According to another aspect of the invention, there is provided an apparatus for converting stream data which is not specific to or is common to particular computers into the data of a format which is specific to a particular program language on a particular computer, comprising: a caching part or component for storing a correspondence between stream data and data of a program language-specific format; an unmarshalling part or component for discriminating whether all or a part of the stream data has been stored in the cache or not, for performing a conversion by using the data on the cache when the stream data exists on the cache, and for converting the stream data into the data of the program language-specific format without using the cache when the data does not exist on the cache; and a cache registering part or component for registering a result into the cache at the time of the conversion from the stream data into the data of the program language-specific format or the conversion from the data of the program language-specific format into the stream data. In such a construction, when the data is received, the unmarshalling part discriminates whether the received data exists on the cache or not, converts the data at a high speed by using the cache when the data exists, and converts the data at a low speed by the foregoing method or another known method without using the cache when the data does not exist on the cache. When the data is converted without using the cache, the conversion result is registered into the cache by using the cache registering part.